<?php

namespace App\Models;

use houdunwang\arr\Arr;
use Illuminate\Database\Eloquent\Model;

class CategoryModel extends Model
{
    //向相应数据表中fill填充数据的时候哪些字段允许填充
    protected $fillable = [
        'content_model_id' ,'title', 'describe','' ,'parent_id', 'is_home', 'home_template', 'list_template', 'content_template'
    ];
    //category栏目表和模型表关联

    public function xianshi(){
        //其实这个$this就是调用的对象
        return $this;
    }
    //无限级分类,获取所有的栏目数据
    public function getAllCategory(){
       $categorys = Arr::category(self::get());
       foreach ($categorys as $k=>$v){
//           下面代码的意思是在$v中追加一个'is_parent'属性,属性的值是后面判断$v['id'] == $this['parent_id']的判断结果,如果当前循环到的$v['id']与当前对象$this['parent_id']相等的话就返回ture给$v['is_parent'],如果不相等就返回false
           $v['is_parent'] = $v['id'] == $this['parent_id'];
           //是否为子栏目
//Arr::isChild($data, $sid, $pid, $fieldPri = 'cid', $fieldPid = 'pid')
//参数                          	说明
//data                      	操作的数组
//sid                      	用来判断当前循环到的$v['id']是不是当前对象$this['id']的子类,$v['id']是循环的,也就是遍历catagory表然后与当前对象$this['id']就行判断,看是不是$this['id']的子栏目
//pid                      	父栏目id(其实就是判断$sid是不是$pid的子类,)
//fieldPri                 	唯一键名，如果是表则是表的主键
//fieldPid                  	父 ID 键名
           $v['is_child'] = Arr::isChild($categorys,$v['id'],$this['id'],'id','parent_id');

           //用重新生成的$v替换$category[$k]中原来的$v
           $categorys[$k] = $v;
       }
        return $categorys;
    }
    //栏目表通过category_model_id关联content_models表
    public function contentModel(){
        return $this->belongsTo(ContentModel::class);
    }
}
